package com.zhonghan.recharge.dao;
import com.zhonghan.recharge.pojo.CustomerCard;
import com.zhonghan.recharge.pojo.ZhFillCard;
import java.util.List;

import org.apache.ibatis.annotations.Param;
public interface ZhFillCardDao{
	/**
	 * 获得ZhFillCard数据的总行数
	 * @return
	 */
    long getZhFillCardRowCount();
	/**
	 * 获得ZhFillCard数据集合
	 * @return
	 */
    List<ZhFillCard> selectZhFillCard();
	/**
	 * 获得一个ZhFillCard对象,以参数ZhFillCard对象中不为空的属性作为条件进行查询
	 * @param obj
	 * @return
	 */
    List<ZhFillCard> selectZhFillCardByObj(ZhFillCard obj);
	/**
	 * 通过ZhFillCard的id获得ZhFillCard对象
	 * @param id
	 * @return
	 */
    ZhFillCard selectZhFillCardById(Integer id);
    /**
     * 通过ZhFillCard的cardNo获得ZhFillCard对象
     */
    ZhFillCard selectZhFillCardByCardNo(Integer sequence);
	/**
	 * 插入ZhFillCard到数据库,包括null值
	 * @param value
	 * @return
	 */
    int insertZhFillCard(ZhFillCard value);
	/**
	 * 插入ZhFillCard中属性值不为null的数据到数据库
	 * @param value
	 * @return
	 */
    int insertNonEmptyZhFillCard(ZhFillCard value);
	/**
	 * 批量插入ZhFillCard到数据库,包括null值
	 * @param value
	 * @return
	 */
    int insertZhFillCardByBatch(List<ZhFillCard> value);
	/**
	 * 通过ZhFillCard的id删除ZhFillCard
	 * @param id
	 * @return
	 */
    int deleteZhFillCardById(Integer id);
	/**
	 * 通过ZhFillCard的id更新ZhFillCard中的数据,包括null值
	 * @param enti
	 * @return
	 */
    int updateZhFillCardById(ZhFillCard enti);
	/**
	 * 通过ZhFillCard的id更新ZhFillCard中属性不为null的数据
	 * @param enti
	 * @return
	 */
    int updateNonEmptyZhFillCardById(ZhFillCard enti);
    /**
     * 通过三个参数去查询充值卡
     */
    List<ZhFillCard> selectCardList(ZhFillCard  value);
    
    /**
     * 回调更改卡片状态
     * @param status
     * @param sequence
     * @return
     */
    int updateStatusBySequence(@Param("status") String status,@Param("sequence") String sequence);
    /**
     * 通过条件查询数据总数
     * @param obj
     * @return
     */
	long getZhFillCardRowCountByObj(ZhFillCard obj);
	
	/**
	 * 查询总销售金额
	 * @param obj
	 * @return
	 */
	List<ZhFillCard> getZhFillCardByObj(ZhFillCard obj);
	
	/**
	 * 激活卡段
	 * @param sequenceBegin
	 * @param sequenceEnd
	 * @return
	 */
	int updateZhFillCardByStatus(@Param("sequenceBegin")String sequenceBegin,@Param("sequenceEnd")String sequenceEnd,@Param("oldStatus") Integer oldStatus,@Param("newStatus") Integer newStatus);
	
	
	long getZhFillCardRowCountBySequences(@Param("sequence1")String sequenceBegin,@Param("sequence2")String sequenceEnd, @Param("status") Integer status);
	
	/**
	 * 获取用户充值卡
	 * @param beginTime
	 * @param endTime
	 * @param status
	 * @param customerName
	 * @return
	 */
	List<CustomerCard> getCustomerCardList(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("status") Integer status, @Param("customerName") String customerName);
}